espectroscopio_embebidosfandomcom-20200214-history
Wiki Content
'Descargar todo el material necesario para trabajar con la tarjeta stamp mini' el cual se encuentra disponible en: ''' https://bitbucket.org/raurregog/embedded-systems/downloads#download-283272 '''Descomprimir todo en una misma carpeta 'Instalar las librerias con el comando sudo apt-get install lib:' -xml2-dev -libusb-1.0-0-dev -readline-dev Esto se hace con el comando: sudo apt-get install ''' Modificar el makefile' entrar a la carpeta material_curso/Factory_Test/basic Dentro de la carpeta basic entrar al archivo build y comentar los últimos dos párrafos de tal forma que el archivo quede como se muestra a continuación: bold=`tput bold` normal=`tput sgr0` warning="\033[41m" blink="\033[5m" cd ./hwstub/ echo "${bold}Compiling sbloader ...${normal}" cd imxtools/sbtools/ make -j3 sudo cp sbloader /usr/local/bin #echo "${bold}Compiling regtools..${normal}" #cd ../../regtools/lib/ #make -j3 #cd .. #make -j3 #echo "${bold}Compiling hwstub tools.${normal}" #cd ../hwstub/lib/ #make -j3 #cd ../tools/ #make -j3 #sudo cp hwstub_shell /usr/local/bin/ #cd ../../../ 'Instalar las herramientas de compilación' Dentro de la misma carpeta ejecutar el comando ./build (en el terminal) %%%%% Solucionar los errores de librerias adicionales que se puedan necesitar siguiendo las instrucciones del inciso 1. %%%% Ejecutar el comando . load_blink Si todo está bien en la trajeta debería aparecer el led D3 parpadeando, esto significa que todas las herramientas necesarias se encuentran instaladas y listas para usarse. Todos los pasos anteriores se realizan solo 1 vez. 'FORMATEAR LA MEMORIA SD PARA ALMACENAR EL SISTEMA DE ARCHIVOS Y LA IMAGEN DEL KERNEL' 'Crear las particiones, formatear la memoria SD y grabar el bootloader y el sistema de archivos' Se necesitan dos particiones en la SD, la primera almacenará el boot-loader y la imágen del kernel; la segunda almacenará el sistema de archivos. Para los siguientes comandos se asume que la tarjeta es detectada como /dev/sdb (para conocer el dispositivo asignado a la tarjeta por Linux se debe insertar la tarjeta y ejecutar el comando sudo fdisk -l) ' Desmontar la partición y ejecutar fdisk: sudo umount /dev/sdb* %%% Desmontar tarjeta %% sudo fdisk /dev/sdb %%% Abrir el gestor de particiones %%% Borrar las particiones existentes: Dentro de fdisk se debe escribir "d" (delete a partition) Command (m for help): d Partition number (1-4): En el campo "Partition number" se debe escribir el número de la partición a ser eliminada, el proceso se debe repetir hasta borrar todas las particiones existentes. '''Crear una partición de 200MB Dentro de fdisk se debe escribir "n" (add a new partition) Seleccionar partición primaria: Escribir "p" Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 Fijar el comienzo de la partición. Al mensaje: First sector (2048-7626751, default 2048): se debe oprimir la tecla enter para asignar el valor por defecto. A lo que la aplicación resonde: Using default value 2048 Fijar el final de la partición. Al mensaje: Last sector, +sectors or +size{K,M,G} (2048-7626751, default 7626751): Ingresar +200M A lo que el sistema responde: Partition 1 of type Linux and of size 200 MiB is set Crear la segunda partición en el espacio sobrante en la SD' ' Dentro de fdisk se debe escribir "n" (add a new partition) Seleccionar partición primaria: Escribir "p" Asignar el número de la partición a "2" Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p Partition number (1-4, default 2): 2 Fijar el commienzo de la partición: Dejar el valor por defecto Fijar el final de la partición: Dejar el valor por defecto First sector (411648-7626751, default 411648): Using default value 411648 Last sector, +sectors or +size{K,M,G} (411648-7626751, default 7626751): Using default value 7626751 Partition 2 of type Linux and of size 3.5 GiB is set 'Cambiar el tipo de la partición 1 a OnTrack DM6 (53)' Dentro de fdisk escribir "t" (change a partition's system id) Escribir "53" Command (m for help): t Partition number (1-4): 1 Hex code (type L to list codes): 53 Changed system type of partition 1 to 53 (OnTrack DM6 Aux3) 'Cambiar el tipo de la partición 1 a Linux (83)' Dentro de fdisk escribir "t" (change a partition's system id) Escribir "83" Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): 83 Al finalizar se debe tener la siguiente tabla de particiones, la cual se obtiene al ejecutar el comando "p" (print the partition table), los datos que se ven a continuación son para una memoria sd de 4GB; Device Boot Start End Blocks Id System /dev/sdb1 2048 411647 204800 53 OnTrack DM6 Aux3 /dev/sdb2 411648 7626751 3607552 83 Linux 'Guardar los cambios realizados' Una vez finalizada la creación de las particiones se deben guardar los cambios en la tabla de particiones de la SD para esto debe ejecutar el comando "w" (write table to disk and exit) Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. 'Formatear la segunda partición como ext3:' sudo mkfs.ext3 /dev/sdb2 Una vez terminados todos los pasos anteriormente listados, la memoria sd está lista para almacenar el sistema de archivos del usuario y la imagen del kernel. ''' CREAR EL SISTEMA DE ARCHIVOS Y LA IMAGEN DEL KERNEL DE LINUX La carpeta suministrada por el profesor (dl) se remplaza por la contenida en la carpeta buildroot-2013.08.1 '''Nos ubicamos dentro de la carpeta buildroot-2013.08.1 y ejecutamos el siguiente comando: make menuconfig Este comando abre una interfáz en donde podemos seleccionar los paquetes de software que queremos incluir dentro de nuestro sistema de archivos, en la parte superior están las instrucciones de navegación en la interfaz. Una vez se terminen de escoger los paquetes que se desean se selecciona "exit" hasta volver a la ventana del terminal en donde ejecutamos el comando make. 2.1.1 Solución de posibles errores. En el proceso de compilación se pueden presentar dos problemas, uno de ellos es el siguiente: You must install 'svn' on your build machine svn is usually part of the subversion package in your distribution make: *** core-dependencies Error 1 El cual se soluciona sencillamente ejecutando el siguiente comando en la terminal: sudo apt-get install svn-buildpackage Otro error que se puede presentar es el siguiente: ERROR:'jtag_status' may be used uninitialized in this function -Werror=maybe-uninitialized La solución para este problema es ir a la carpeta buildroot-2013.08.1/output/build/openocd7.0-0/src/target y el el makefile modificar las siguientes líneas de código de tal forma que queden como se muetra a continuación: CFLAGS = -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -Os -Wall -Wstrict-prototypes -Wformat-security -Wshadow -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls CFLAGS_FOR_BUILD = -g -O2 -Wall -Wstrict-prototypes -Wformat-security -Wshadow -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls Una vez terminado este proceso se vuelve a ejecutar el comando make en el terminal y se espera que termine la compilación (puede tardar incluso varias horas dependiendo del computador y el soporte del sistema de archivos). 'Revisión del sistema de archivos que se acaba de crear' En la carpeta buildroot-2013.08.1/output/images debe aparecer un archivo comprimido con el nombre "rootfs.tar", se revisa la fecha de creación y se confirma que si sea el archivo generado. 'CREAR LA IMAGEN DEL KERNEL DE LINUX' ''' Agregar la ruta de compilación a la terminal' Esto se debe hacer cada vez que se realice el proceso o cambiar el path por defecto el el archivo bashsc una única vez. Para agregar el path desde la terminal se debe usar el siguiente comando: ''export PATH=$PATH:/home/ricardo/Documentos/buildroot-2013.08.1/output/host/usr/bin Para agregar el path al bashsc se escribe el siguiente comando en la terminal y se agrega la misma línea al final del archivo gedit ~/.bashrc Esto se hace con el fin de que los archivos ejecutables para el compilador estén disponibles en el path del sistema. Una forma rápida de confirmar que el path sea el correcto es teclear "arm-linux-" y presionar la tecla de tabular 2 veces, con esto debe aparecer una lista en donde los elementos tienen la forma "arm-linux-". 'Definir la arquitectura del procesador y las herramientas del compilador' para esto se usa este comando una vez definido el path estando ubicados en la capeta linux-2.6.35.3 make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig "ARCH=arm" hace referencia a que tome la arquitectura arm del procesador y no la que se tienen por defecto en linux que es la de los procesadores con arquitectura mx86. "CROSS_COMPILE=arm-linux-" se utiliza para que se compilen todas los archivos de nombre arm-linux- que se vieron en el listado de comprobación del paso anterior. "menuconfig" es para definir todas la preferencias de la imagen del kernel a crear, una vez terminado salimos de nuevo al terminal y usamos el comando "make ARCH=arm CROSS_COMPILE=arm-linux-" para iniciar la compilación. Se pueden presentar errores que tienen que ver con la falta de un archivo, el archivo si existe pero al parecer no tiene un link asociado que lo relacione con el compilador, para solucionar esto se siguen los siguietes pasos: Ubicarse en la carpeta buildroot-2013.08.1/output/host/usr/bin y crear el link faltante usando el siguiente comando: ln -s arm-buildroot-linux-uclibcgnueabi-ld.real arm-linux-ld.real 'Comprobar que la imagen del kernel haya sido creada' dentro de la carpeta linux-2.6.35.3 ejecutamos el siguiente comando : ls -l arch/arm/boot Esto nos muestra una lista de los archivos presentes en la ruta, dentro de los cuales debe haber uno llamado "zimage" y la fecha y hora de creación, con lo cual se puede confirmar que es la imagen que se acaba de generar. 'DESCOMPRIMIR EL SISTEMA DE ARCHIVOS DENTRO DE LA MEMORIA SD' 'Descomprimir el sistema de archivos' ubicarse en la carpeta /buildroot-2013.08.1/output/Images y ejecutar el comando '' sudo tar -xvf rootfs.tar -C /media/user(el nombre de su computador)/disk (es el nombre largo)/'' 'Modificar el archivo de inicio del sistema' Ejecutar sudo nautilus y abrir la memoria sd en la carpeta /etc de la memoria sd buscar el archivo inittab y modificar la línea donde se encuentra "ttyS0" por "ttyAM0" 'GUARDAR LA IMAGEN DEL KERNEL DE LINUX DENTRO DE LA MEMORIA SD' Ubicarse en la carpeta Imx-bootlets-src-10.05.02 Con el comando sudo fdisk -l verificar el nombre asignado a la tarjeta sd por el sistema, en caso de que sea diferente a "sdb", ingresar al make file de la misma carpeta y modificar las siguientes líneas: sudo dd if=sd_mmc_bootstream.raw of=/dev/ sudo umount /dev/* 'Montar la imagen del kernel sobre la sd' con el siguiente comando se graba la imagen del kernel en la sd: make ARCH=mx23 CROSS_COMPILE=arm-linux-'' el "mx23" se usa porque es la familia del procesador que se está usando. '''5.1.1' Al descomprimir la imagen del kernel en la memoria sd se puede presentar un problema por la falta del ejecutable "elftosb2", esto se soluciona fácilmente dirigiendose a la carpeta Imx-bootlets-src-10.05.02 utilizando sudo nautilus y copiando el ejecutable antes mencionado para después pegarlo en la carpeta /usr/bin de su computador Una vez se haya copiado el ejecutable se le dan permisos mediante el siguiente comando sudo chmod +x /usr/bin/elftosb2 PRUEBA DEL PUERTO SERIAL Y EL SISTEMA DE ARCHIVOS 'Abrir el minicom con el comando sudo minicom -s (solo la primera vez)' Dentro del minicom seleccionar la opción configurar puerto serial y modificar los siguientes items: 6.1.1 Dispositivo serial : /dev/ttyUSB0 (Asegurarse de que el dispositivo si tenga asignado el nombre ttyUSB0 usando el comando dmesg, normalmente el dispositivo de interés aparece de último) 6.1.2. '''Bps/paridad/bits : 115200 8N1 (que es la velocidad de transmisión, los bits de paridad y el bit de stop respectivamente) '''6.1.3. '''Control de flujo por hardware: NO '''6.1.4. Control de flujo por software: NO Después de realizar estos cambios se presiona la tecla "Esc" para regresar a la ventana de configuración donde se selecciona '''"Salvar configuración como dfl" '''después seleccionamos salir. Conectamos la tarjeta con el conector usb a serial y la alimentación; si todo está bien deberia comenzar a correr una serie de instrucciones en la ventana del minicom que finalmente pedirá un login para acceder al builroot, se teclea "root" para acceder al sistema. Para desmontar el sistema tecleamos "halt" y esperamos que nos diga "system halted".